package com.woniuxy.stall.service;

import com.woniuxy.certified.model.param.LoadAllAccountParam;
import com.woniuxy.core.util.PageInfo;
import com.woniuxy.renters.model.param.AddrentersinsertstallParam;
import com.woniuxy.stall.dao.StallCheck;
import com.woniuxy.stall.dao.StallInfo;
import com.baomidou.mybatisplus.extension.service.IService;
import com.woniuxy.stall.model.Param.SelectStallRentByCertifiedIdParam;
import com.woniuxy.stall.model.form.SelectStallForm;
import com.woniuxy.stall.service.impl.dto.StallInfoDTO;
import com.woniuxy.stall.service.param.*;
import org.springframework.web.multipart.MultipartFile;

import java.io.IOException;
import java.util.List;
import java.util.Set;

/**
 * <p>
 *  服务类
 * </p>
 *
 * @author 凌玉春
 * @since 2024年01月15日
 */
public interface StallInfoService extends IService<StallInfo> {

    StallInfo findStallById(Integer stallInfoId);

    String findStallNumById(Integer stallInfoId);


    PageInfo<StallInfo> findStallsByCertifiedId(SelectStallForm ssf);

    List<Integer> certifiedAddStall(List<AddStallParam> params);

    PageInfo getWaitingCheckStall(Integer current,Integer size);

    void checkStall(Set<Integer> ids);

    PageInfo<StallInfo> getWaitingCheckStallByCeId(Integer current, Integer size, Integer certifiedId);

    PageInfo<StallInfoDTO> platGetStalls(PlatGetStallParam param);

    List<StallInfoDTO> renterGetStalls(Integer renterId);


    List<StallInfo> getStallInfosByIds(Set<Integer> stallInfoIds);


    PageInfo<StallInfoDTO> cerGetStallPage(CerGetStallPageParam param);

    List<StallInfoDTO> renterGetStallByState(Integer renterId, Integer stateId);

    List<StallInfoDTO> renterGetFreeStallByTime(Integer renterId, String startTime, String endTime);

    void rentersinsertstall(AddrentersinsertstallParam param);

    String uploadImage(MultipartFile image) throws IOException;


    void downStallById(Integer renterId, Integer stallInfoId);

    void upStallById(RenterUpStallByIdParam param);

    void cerDownStallById(Integer cerAccountId, Integer stallInfoId);

    void cerUpStallById(CerUpStallByIdParam param);
    List<StallCheck> loadAllstall(String id);

    PageInfo<StallCheck> loadAllstalls(LoadAllAccountParam param, String id);

    StallInfo loadcarportstatebyid(Integer stallInfoId);


    List<StallInfoDTO> userGetCanUseStallsByTime(UserGetStallsByTimeParam toBean);

    PageInfo<StallInfo> selectStallRentByCertifiedId(SelectStallRentByCertifiedIdParam param);
}
